In networks for transmitting data, in packet mode, which exhibit a high bit rate, of the order of 34 Mbit/s to 622 Mbit/s for example, the behaviour of the sources is generally very irregular.
Moreover, while crossing a network, a set of data may pass through transmission links which support very different bit rates.
Even when the capacities of the various transmission links are identical, several data streams originating from different nodes may show up simultaneously at a particular input of a node, creating a "bottleneck" liable to give rise to a state of congestion in the network.
It is sought both to make the best use of the available passband, by authorizing the sources to send as soon as this is possible and to prevent congestion leading to data loss, by slowing down the sources as appropriate: this is referred to as flow control.
Flow control methods are already known, two main families being distinguishable: flow control based on allocating credits and flow control based on allocating bit rates; the invention lies in the first family.
The principle of flow control based on allocating credits is as follows: a sender is prohibited from transmitting data so long as it has not received from the receiver the indication that the receiver is able to accommodate them. To do this, the receiver regularly dispatches packets of credits to the sender, containing information about its capacity to receive data.
The number of "credits" transported by each packet of credits dispatched by the receiver to the sender corresponds, for each virtual input channel of the sender, to the number of unoccupied slots in an input buffer register assigned to this virtual channel. Various algorithms for managing credits have been proposed. Reference can be made for example to the article by H. T. Kung et al., "Credit-based flow control for ATM networks: credit update protocol, adaptive credit allocation and statistical multiplexing", ACM 1994.
A drawback of this process is due to the time required for the control information to make its way back to the sender. The sender's reaction to a request from the receiver is therefore delayed, which may cause under-utilization of the resources, this being all the greater the larger the distance between the transmitter node and the receiver node. If for example this distance is 500 km, the propagation time Rtt is 5 ms. The upstream or sender node therefore only reacts to a dispatch of credits 5 ms after the instant of availability. This delay Rtt corresponds to the send duration for 1768 packets of 53 bytes at 150 Mbit/s. Unless extremely long input buffers are used at the receiver node, this method of allocating credits results in under-utilization of the transmission link between the sender and receiver nodes.
In the present document, unless advised otherwise, the term "transmitting a packet" is regarded as meaning dispatching this packet and erasing it from the buffer which stores this packet. If this is not the case, explicit mention will be made that the sender "preserves" the said packet.